//
//  UITableView+MKUI.h
//  MKUI
//
//  Created by sushangjin on 15/3/19.
//  Copyright © 2020 sushangjin. All rights reserved.
//

#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UITableView (MKUI)
/**
 *  如果tableview为group类型,且含有tablefootview,且自定了section的头部视图高度时,它的tablehead会有多余的空白,此方法用于去除该空白
 */
- (void)mk_hiddenHeaderAreaBlank;
/**
 *  隐藏表尾区域上多余的单元格分隔线
 */
- (void)mk_hiddenFooterAreaSeparators;
/**
 *  查找显示面积最大的单元格索引
 *
 *  @return 索引
 */
- (nullable NSIndexPath *)mk_indexPathForMaxVisibleArea;

@property(nonatomic,readonly) CGFloat mk_separatorHeight;//系统分割线的高度值
//ios10、11、12时，cell的contentView尺寸会被压缩，扣掉分隔线的调度
//ios13时，cell的高度会被系统自动添加上分隔线的高度
+ (BOOL)mk_isAutoAddSeparatorHeightToCell;

/// 返回指定单元格类的可视单元格
/// @param cellClass 可视的单元格
- (NSArray<__kindof UITableViewCell *> *)mk_visibleCellsWithClass:(Class)cellClass;

@property(nonatomic,readonly) NSArray<NSIndexPath *> *mk_indexPathsForRowsInVisibleContentBounds;//返回在可见区域内的索引（扣除了contentInsets）

/// 适配所有ios版本的performBatchUpdates:completion:
/// @param updates 变更
/// @param completion 完成回调
- (void)mk_performBatchUpdates:(void (NS_NOESCAPE ^ _Nullable)(void))updates completion:(void (^ _Nullable)(BOOL finished))completion;

/// 滚动到tableView最后一个cell
/// @param animated 是否动画
- (void)mk_scrollToBottomCellWithAnimated:(BOOL)animated;
@end
@interface UITableView(MK_SizeFits)

/// 计算tableview在指定宽度下，最合适的高度值
/// @param boundsWidth 宽度
- (CGFloat)mk_heightThatFits:(CGFloat)boundsWidth;

/// 计算指定单元格cell的高度值
/// @param p 单元格位置
- (CGFloat)mk_cellHeightForIndexPath:(NSIndexPath *)p;
@end
NS_ASSUME_NONNULL_END
